package com.leetcode.bit;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Dennis Li
 * @date 2020/7/21 14:57
 */
public class ReverseBits_190 {

    Map<Integer, Integer> map = new HashMap<>();

    public int reverseBits(int n){
        if(!map.containsKey(n))
            map.put(n, reverse(n));
        return map.get(n);
    }

    public int reverse(int n) {
        int ret = 0;
        // 限定条件是32
        for (int i = 0; i < 32; i++) {
            // ret往左移
            // 相当于往左移的在往右赋值
            ret <<= 1;
            // 取n当时最低位的值
            ret |= n & 1;
            // n往右移
            n >>>= 1;
        }
        return ret;
    }

}
